# [Flink]如何更通用地将Kafka(或其他)数据落地Hive?
> 项目上经常遇到一些将Kafka数据落地Hive的需求,Spark可以通过SparkStreaming解决,但当下更流行的方式应该属Flink了,为了更好地学习Flink,特地归类总结了一些将Kafka数据或者其他数据源的数据落入Hive的代码,提炼一些主要的思路,并将一些核心代码整理在这里,方便后面自己回忆,在进行重复开发的时候可以开箱即用(Ctrl-C, Ctrl-V)。
## 简述
大多数的数据源一般都是类似于Kafka这样的及时消息队列,下游可以是消息队列或者是离线存储系统(比如Hive、HDFS),也或许是MySQL之类的数据库。
有很简单的FlinkSQL可以使用,在这里不做讨论,以下讨论较为灵活的低阶API(DataStream API),并且以Flink消费Kafka数据落入Hive为例,基于Flink1.12.1版本。
大致流程都是:
- 1、SOURCE,消费Kafka的数据
- 2、TRANSFORM,转换,实现自己的业务逻辑
- 3、SINK,将数据落到下游存储系统
废话少说,直接放码。
## 开整
### SOURCE
代码实现使用了Flink去消费Kafka,得到一个`DataStream